# 字典（dict)相当于map
# 字典的作用和列表类似
# 字典中的每一个元素都有一个唯一的名字
# 可以快速查询
# 唯一的名字叫键（key）可以快速的查询value

d = {}  # 创建的空字典
# 语法：
# {key ： value，key ：value}

d = {"name": "孙悟空", "age": "19"}
# 字典的值可以是任意元素
# key的键可以是任意的不可变对象
# key不能重复

# 根据键来获取值
print(d["name"])
# 如果使用了不存在的值会报错

di = dict(name="孙悟空", age="18", gender="男")
# len()同样可以获取键值对的个数
# in 和 not in 都可以用在字典上
print("hello" in d)

# 获取字典的值。根据键来获取值
# d[key]

# 通过[]来获取值时，如果键不存在，会抛出异常
# 所以一般会用get来结合字典查询
# get(key[,default])该方法用来根据键来获取字典的值
print(d.get("hello"))  # 没有值就会返回none
# 如果加了默认值的字符串，这会返回默认值
print(d.get("hello", "默认值"))

# 修改字典
# d[key] = value
d["name"] = "sunwukong"  # 修改字典的key-value
d["address"] = "花果山"  # 向字典中添加key-value
# 如果key存在则修改value，如果不存在则添加

# setfault（）可以用来向字典中添加key-value
# 如果key已经存在于字典中，则返回key的值，不会对字典做任何操作
# 如果key不存在，则向字典中添加这个key，并设置value
result = d.setdefault("name", "猪八戒")

# update([other])
# 将其它的字典中的key—value添加到当前字典中
# 如果有重复的key，则后边的会替换到当前的
d.update(di)

# del 删除字典中的key-value
del d["a"]
# popitem()随机删除字典中的一个键值对，一般会删除最后一个键值对
# 删除之后，它会将删除的key-value作为返回值返回
# 返回的是一个元组，元组中有两个元素，第一个元素是删除的key，第二个是删除的value
# d.popitem()
# result = d.popitem()

# pop(key[,default])
# 根据key删除字典中的key-value;
# 它会返回value
# 如果删除不存在的key，则会报错
# 如果删除不纯在的key，设置默认值，就不会报错，而是返回默认值

result = d.pop("d")

# clear()用来清空所有的项目
# 复制的对象，和原来的对象是独立的，修改一个不会影响另一个
